2020-0706-KShot
link: https://web.eecs.umich.edu/~weimerw/p/weimer-dsn2020-kshot.pdf
会议:DSN 2020
运行时内核漏洞修补技术(Live kernel patching)能够在不重启系统的条件下修复漏洞,从而减少系统不可用时间。但目前的运行时内核漏洞修补技术受限于:(1)依赖特定操作系统的支持,没有一种支持不同类型操作系统的解决方案;(2)内核的完整性,若内核已经被攻击者攻陷,运行时内核漏洞修补很可能会失败。
作者针对以上问题,提出了一种利用x86 SMM(System Management Mode)和Intel SGX进行运行时内核漏洞修复技术,KShot。下图为KShot的工作流程:
- 从服务器获取Patch
- 校验、解析Patch,为SMM Handler准备Patch(Fig. 3)
- 通过System Management Interrupt (SMI)将控制权交给SMM Handler,并保存上下文
- SMM Handler利用trampolines的方式(Fig. 1中instruction-level)进行patch
- 恢复上下文,将控制权交还给内核
作者在Linux kernel 3.14、4.4中挑选了214格漏洞,并随机选取其中的30个进行实验,以验证KShot修复漏洞的能力,作者通过手动验证,发现这30个漏洞均成功修复。
KShot在SGX准备阶段的开销:
KShot在SMM中patch的开销: